package com.xf.day07_graphx
import org.apache.spark.graphx.{Edge, Graph}
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 *  使用 边的集合的 RDD 构建图
 */
object NewGraphx2 {
  def main(args: Array[String]): Unit = {

    val conf = new SparkConf().setAppName("TestGraphx2").setMaster("local[*]")
    val sc = new SparkContext(conf)

    val recordRDD :RDD[String]= sc.textFile("file:///D:\\workRecord\\spark_project20250924\\data\\edges.txt")

    // 为啥 返回值 为 Edge[String]  ？？？
    val EdgeRDD : RDD[ Edge[String] ]  = recordRDD.map {
                                                          x =>
                                                            val fields = x.split(" ");
                                                            Edge(fields(0).toLong, fields(1).toLong, fields(2))
                                                        }

    // 使用 EdgeRDD 实例化 Graph类 建立一个 Graph对象
    val graph_fromEdges : Graph[String, String]  = Graph.fromEdges(EdgeRDD, "VerDefaultAttr")

    // 查看图的顶点信息
    /**
     * (2,VerDefaultAttr)
     * (3,VerDefaultAttr)
     * (7,VerDefaultAttr)
     * (5,VerDefaultAttr)
     */
    graph_fromEdges.vertices.collect().foreach(println)

    //查看图的 边的信息
    /**
     * Edge(2,5,Colleague)
     * Edge(3,7,Collaborator)
     * Edge(5,3,Advisor)
     * Edge(5,7,PI)
     */
   graph_fromEdges.edges.collect().foreach(println)




  }
}
